// 引入 request 方法，假设 request 方法已经定义在某个工具文件中
import request from '/@/utils/request';
import { JToken } from '../models';

// 定义 API 路径枚举
enum Api {
    APIJSONAdd = '/aPIJSON/add',
    APIJSONDelete = '/aPIJSON/delete',
    APIJSONGet = '/aPIJSON/get',
    APIJSONGetTable = '/aPIJSON/get/{table}',
    APIJSONUpdate = '/aPIJSON/update',
}

// 定义 API 方法
/**
 * 新增 🔖
 * @param body 表对象或数组，若没有传Id则后端生成Id
 */
export const apiAPIJSONAddPost = (body?: { [key: string]: JToken }) =>
    request({
        url: Api.APIJSONAdd,
        method: 'post',
        data: body,
    });

/**
 * 删除（支持非Id条件、支持批量） 🔖
 * @param body 请求体
 */
export const apiAPIJSONDeletePost = (body?: { [key: string]: JToken }) =>
    request({
        url: Api.APIJSONDelete,
        method: 'post',
        data: body,
    });

/**
 * 统一查询入口 🔖
 * @param body 请求体
 */
export const apiAPIJSONGetPost = (body?: { [key: string]: JToken }) =>
    request({
        url: Api.APIJSONGet,
        method: 'post',
        data: body,
    });

/**
 * 查询 🔖
 * @param table 表名
 * @param body 请求体
 */
export const apiAPIJSONGetTablePost = (table: string, body?: { [key: string]: JToken }) =>
    request({
        url: Api.APIJSONGetTable.replace('{table}', encodeURIComponent(table)),
        method: 'post',
        data: body,
    });

/**
 * 更新（只支持Id作为条件） 🔖
 * @param body 支持多表、多Id批量更新
 */
export const apiAPIJSONUpdatePost = (body?: { [key: string]: JToken }) =>
    request({
        url: Api.APIJSONUpdate,
        method: 'post',
        data: body,
    });